package com.zhaoyu.model.media.pojos;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.ibatis.type.Alias;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 自媒体图文内容
 * </p>
 *
 * @author itusian
 */
@Data
@TableName("wm_news")
public class WmNews implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * @TableField注解
     *      该注解用于标识非主键的字段
     * @TableField(fill = FieldFill.INSERT) 插入时填充字段
     *      创建人、创建时间
     * @TableField(fill = FieldFill.INSERT_UPDATE) 插入和更新时填充字段
     *      修改人、更新时间
     */

    /**
     * 主键
     */
    @ApiModelProperty("主键")
    @TableId(value = "id", type = IdType.AUTO) // 自增
    private Integer id;

    /**
     * 自媒体用户ID
     */
    @ApiModelProperty("自媒体用户ID")
    @TableField("user_id")
    private Integer userId;

    /**
     * 标题
     */
    @ApiModelProperty("标题")
    @TableField("title")
    private String title;

    /**
     * 图文内容
     */
    @ApiModelProperty("图文内容")
    @TableField("content")
    private String content;

    /**
     * 文章布局
            0 无图文章
            1 单图文章
            3 多图文章
           -1 自动文章
     */
    @ApiModelProperty("0无图文章/1单图文章/3多图文章/-1自动文章")
    @TableField("type")
    private Short type;

    /**
     * 图文频道ID
     */
    @ApiModelProperty("图文频道ID")
    @TableField("channel_id")
    private Integer channelId;

    @TableField("labels")
    private String labels;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @TableField("created_time")
    private Date createdTime;

    /**
     * 提交时间
     */
    @ApiModelProperty("提交时间")
    @TableField("submited_time")
    private Date submitedTime;

    /**
     * 当前状态
         0 草稿 NORMAL
         1 提交(待审核) SUBMIT
         2 审核失败 FAIL
         3 人工审核 ADMIN_AUTH
         4 人工审核通过 ADMIN_SUCCESS
         8 审核通过(待发布) SUCCESS
         9 已发布 PUBLISHED
     */
    @ApiModelProperty("0草稿/1提交(待审核)/2审核失败/3人工审核/4人工审核通过/8审核通过(待发布)/9已发布")
    @TableField("status")
    private Short status;

    /**
     * 定时发布时间，不定时则为空
     */
    @ApiModelProperty("定时发布时间，不定时则为空")
    @TableField("publish_time")
    private Date publishTime;

    /**
     * 拒绝理由
     */
    @ApiModelProperty("拒绝理由")
    @TableField("reason")
    private String reason;

    /**
     * 发布库文章ID
     */
    @ApiModelProperty("发布库文章ID")
    @TableField("article_id")
    private Long articleId;

    /**
     * 文章封面图片
     * 图片用逗号分隔
     */
    @ApiModelProperty("文章封面图片 图片用逗号分隔")
    @TableField("images")
    private String images;

    @ApiModelProperty("0下架/1上架")
    @TableField("enable")
    private Short enable; // enable：0下架,1上架
    
    /**
     * 状态枚举类
     */
    @Alias("WmNewsStatus")
    public enum Status{
        NORMAL((short)0),SUBMIT((short)1),FAIL((short)2),ADMIN_AUTH((short)3),ADMIN_SUCCESS((short)4),SUCCESS((short)8),PUBLISHED((short)9);
        short code;
        Status(short code){
            this.code = code;
        }
        public short getCode(){
            return this.code;
        }
    }

}